package cn.feng.thinkInJava.b3_1_多线程并发.a3_线程间通讯;


/*

1���̼߳�ͨ�š�
	�ȴ�/���ѻ��ơ�

	Ҳ���ǳ�����������������⡣

	1.��������������߳���ʱ��
	��Ҫ�û�ȡִ��Ȩ���߳��жϱ�ǡ�
	ͨ��while��ɡ�

	2.��Ҫ���Է����̻߳��ѡ�
	������notify���ǲ����Եġ���Ϊ�п��ܳ���ֻ���ѱ�����
	�п��ܻᵼ�£������̶߳��ȴ�
	���Կ���ͨ��notifyAll����ʽ����� ��



���������һ��bug������ÿ��notifyAll�����ỽ�ѱ�����
�ɲ�����ֻ���ѶԷ��أ�

JDK1.5�汾�ṩ��һЩ�µĶ����Ż��˵ȴ��ѻ��ơ�

1����synchronized �滻����Lock�ӿڡ�
	����ʽ���������ʾ��
	Lock
		��ȡ��lock();
		�ͷ���unlock();ע�⣺�ͷŵĶ���һ��Ҫִ�У�����ͨ��������finally�С�
		��ȡCondition����newCondition();
2����Object�е�wait��notify��notifyAll�������滻����Condition��await��signal��signalAll��
	����ǰ��ͬ�ǣ�һ��ͬ�������߱�һ��������Ծ߱��Լ��Ķ���wait��notify������
	�����ǽ�wait��notify�ȷ�������װ��һ�����еĶ���Condition����һ��Lock���Ͽ����ж��Condition����


	Lock lock = new ReentrantLock();

	Condition conA = lock.newCondition();
	Condition conB = lock.newCondition();

	con.await();//������



	con.signal();���


	set()
	{
		if(flag)
			conA.await();//����ߣ�
		code......;

		flag = true;
		conB.signal();
	}
	
	out()
	{
		if(!flag)
			conB.await();//�����

		code....;
		flag = false;
		conA.signal();
	}



wait��sleep�����
wait:�ͷ�cpuִ��Ȩ���ͷ�ͬ������
sleep:�ͷ�cpuִ��Ȩ�����ͷ�ͬ������


synchronized(��)
{
	wait();
}


ֹͣ�̣߳�
	stop��ʱ��
	ԭ�?run��������run������ͨ������ѭ����ָ������סѭ���̼߳��ɽ���

	1����������ǡ�
	2�����̴߳����˶���״̬��û��ִ�б�ǣ�����һ���޷�����
		��ʱ����ѭ�������˳�����״̬������ǿ�ƽ����״̬��
		ǿ�ƽ����״̬��interrupt();Ŀ�����߳�ǿ�ƴӶ���״̬�ָ�������״̬��
		���ǻᷢ��InterruptedException�쳣��



�߳���һЩ������
	setDaemon(boolean):���̱߳��Ϊ��̨�̣߳���̨�̺߳�ǰ̨�߳�һ������һ����ִ��Ȩ���У�
	ֻ���ڽ���ʱ������𣬵�ǰ̨�̶߳����н���󣬺�̨�̻߳��Զ�����

	join():ʲô��˼���ȴ���߳̽���A�߳�ִ�е���B��.join����ʱ��A�ͻᴦ�ڶ���״̬��
			Aʲôʱ�������أ���B���н����A�ͻ�߱������ʸ񣬼������С�

	�����̣߳�������ɶ�ĳ���̵߳���ʱ����ִ�С�

	


���߳��ص㣺
1�����̵߳Ĵ��������ַ�ʽ���Լ����

2��
	ͬ�����ص㡣
	ͬ���ĺô���
	ͬ���ı׶ˣ�
	ͬ����ǰ�᣺
	ͬ���ı�����ʽ�Լ����
	����staticͬ������������һ����

	�������Ҫ��д�ĳ�����


3���̼߳�ͨ�ţ��������ܽᡣ


4��wait��sleep��  yield����ʱ��ͣ���������߳����ͷ�ִ��Ȩ��






*/

